from fastmcp import FastMCP
import requests

# Initialize FastMCP server
mcp = FastMCP("weatherMcp", dependencies=["requests"] ,  host="127.0.0.1", port=9001)


@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"


@mcp.prompt()
def ask_review(code_snippet: str) -> str:
    """Generates a standard code review request."""
    return f"Please review the following code snippet for potential bugs and style issues:\n```python\n{code_snippet}\n```"


@mcp.tool()
def get_current_weather(province: str, city: str) -> str:
    """Fetch current weather forecast for a given province and city in China."""
    print(" in mcp server : " , province, city)
    cityMap = {
        "上海上海": "101020100", "上海嘉定": "101020500", "上海奉贤": "101021000", "上海宝山": "101020300",
        "上海崇明": "101021100", "上海徐汇": "101021200", "上海普陀": "101021500", "上海杨浦": "101021700",
        "上海松江": "101020900", "上海浦东新区": "101020600", "上海虹口": "101021600", "上海金山": "101020700",
        "上海长宁": "101021300", "上海闵行": "101020200", "上海青浦": "101020800", "上海静安": "101021400",
        "上海黄浦": "101020400", "内蒙古东河": "101080208", "内蒙古丰镇": "101080412", "内蒙古乌兰察布": "101080405",
        "内蒙古乌海": "101080301", "内蒙古乌达": "101080304", "内蒙古九原": "101080212", "内蒙古兴和": "101080406",
        "内蒙古凉城": "101080407", "内蒙古包头": "101080201", "内蒙古化德": "101080403", "内蒙古卓资": "101080402",
        "内蒙古呼和浩特": "101080101", "内蒙古和林": "101080104", "内蒙古商都": "101080404", "内蒙古四子王旗": "101080411",
        "内蒙古回民": "101080109", "内蒙古固阳": "101080205", "内蒙古土右旗": "101080204", "内蒙古土左旗": "101080102",
        "内蒙古察右中旗": "101080409", "内蒙古察右前旗": "101080408", "内蒙古察右后旗": "101080410", "内蒙古托县": "101080103",
        "内蒙古新城": "101080108", "内蒙古昆都仑": "101080209", "内蒙古武川": "101080107", "内蒙古海勃湾": "101080302",
        "内蒙古海南": "101080303", "内蒙古清水河": "101080105", "内蒙古玉泉": "101080110", "内蒙古白云鄂博": "101080202",
        "内蒙古石拐": "101080211", "内蒙古赛罕": "101080106", "内蒙古达茂旗": "101080206", "内蒙古集宁": "101080401",
        "内蒙古青山": "101080210", "北京东城": "101011600", "北京丰台": "101010900", "北京北京": "101010100",
        "北京大兴": "101011100", "北京密云": "101011300", "北京平谷": "101011500", "北京延庆": "101010800",
        "北京怀柔": "101010500", "北京房山": "101011200", "北京昌平": "101010700", "北京朝阳": "101010300",
        "北京海淀": "101010200", "北京石景山": "101011000", "北京西城": "101011700", "北京通州": "101010600",
        "北京门头沟": "101011400", "北京顺义": "101010400", "吉林东丰": "101060702", "吉林东昌": "101060507",
        "吉林东辽": "101060703", "吉林丰满": "101060210", "吉林临江": "101060903", "吉林九台": "101060104",
        "吉林乾安": "101060802", "吉林二道": "101060107", "吉林二道江": "101060508", "吉林伊通": "101060405",
        "吉林公主岭": "101060404", "吉林农安": "101060102", "吉林前郭": "101060803", "吉林南关": "101060108",
        "吉林双辽": "101060402", "吉林双阳": "101060106", "吉林吉林": "101060201", "吉林和龙": "101060305",
        "吉林四平": "101060401", "吉林图们": "101060309", "吉林大安": "101060603", "吉林宁江": "101060806",
        "吉林安图": "101060303", "吉林宽城": "101060109", "吉林延吉": "101060301", "吉林延边": "101060306",
        "吉林德惠": "101060103", "吉林扶余": "101060805", "吉林抚松": "101060906", "吉林敦化": "101060302",
        "吉林昌邑": "101060207", "吉林朝阳": "101060110", "吉林松原": "101060801", "吉林柳河": "101060503",
        "吉林桦甸": "101060206", "吉林梅河口": "101060502", "吉林梨树": "101060403", "吉林榆树": "101060105",
        "吉林永吉": "101060203", "吉林江源": "101060907", "吉林汪清": "101060304", "吉林洮北": "101060606",
        "吉林洮南": "101060602", "吉林浑江": "101060908", "吉林珲春": "101060308", "吉林白城": "101060601",
        "吉林白山": "101060901", "吉林磐石": "101060205", "吉林绿园": "101060111", "吉林舒兰": "101060202",
        "吉林船营": "101060209", "吉林蛟河": "101060204", "吉林西安": "101060705", "吉林辉南": "101060504",
        "吉林辽源": "101060701", "吉林通化": "101060501", "吉林通化县": "101060506", "吉林通榆": "101060605",
        "吉林铁东": "101060407", "吉林铁西": "101060406", "吉林镇赉": "101060604", "吉林长岭": "101060804",
        "吉林长春": "101060101", "吉林长白": "101060905", "吉林集安": "101060505", "吉林靖宇": "101060902",
        "吉林龙井": "101060307", "吉林龙山": "101060704", "吉林龙潭": "101060208", "天津东丽": "101030400",
        "天津北辰": "101030600", "天津南开": "101031500", "天津和平": "101030800", "天津天津": "101030100",
        "天津宁河": "101030700", "天津宝坻": "101030300", "天津武清": "101030200", "天津河东": "101031200",
        "天津河北": "101031600", "天津河西": "101031300", "天津津南": "101031000", "天津滨海新区": "101031100",
        "天津红桥": "101031700", "天津蓟州": "101031400", "天津西青": "101030500", "天津静海": "101030900",
        "辽宁东洲": "101070406", "辽宁东港": "101070604", "辽宁东陵": "101070115", "辽宁中山": "101070208",
        "辽宁丹东": "101070601", "辽宁义县": "101070704", "辽宁于洪": "101070114", "辽宁元宝": "101070605",
        "辽宁兴城": "101071404", "辽宁兴隆台": "101071305", "辽宁凌河": "101070707", "辽宁凌海": "101070702",
        "辽宁凌源": "101071203", "辽宁凤城": "101070602", "辽宁北票": "101071205", "辽宁北镇": "101070706",
        "辽宁千山": "101070308", "辽宁南票": "101071407", "辽宁南芬": "101070507", "辽宁双台子": "101071304",
        "辽宁双塔": "101071202", "辽宁古塔": "101070703", "辽宁台安": "101070302", "辽宁和平": "101070107",
        "辽宁喀左": "101071204", "辽宁大东": "101070109", "辽宁大洼": "101071302", "辽宁大石桥": "101070802",
        "辽宁大连": "101070201", "辽宁太和": "101070708", "辽宁太子河": "101071008", "辽宁太平": "101070905",
        "辽宁宏伟": "101071007", "辽宁宽甸": "101070603", "辽宁岫岩": "101070303", "辽宁平山": "101070503",
        "辽宁庄河": "101070207", "辽宁康平": "101070104", "辽宁建平县": "101071207", "辽宁建昌": "101071402",
        "辽宁开原": "101071102", "辽宁弓长岭": "101071004", "辽宁彰武": "101070902", "辽宁抚顺": "101070401",
        "辽宁振兴": "101070606", "辽宁振安": "101070607", "辽宁文圣": "101071006", "辽宁新宾": "101070402",
        "辽宁新抚": "101070405", "辽宁新民": "101070106", "辽宁新邱": "101070904", "辽宁旅顺": "101070205",
        "辽宁昌图": "101071103", "辽宁明山": "101070506", "辽宁普兰店": "101070204", "辽宁望花": "101070407",
        "辽宁朝阳": "101071201", "辽宁本溪": "101070501", "辽宁本溪县": "101070502", "辽宁桓仁": "101070504",
        "辽宁沈北新区": "101070113", "辽宁沈河": "101070108", "辽宁沈阳": "101070101", "辽宁沙河口": "101070210",
        "辽宁法库": "101070105", "辽宁浑南": "101070102", "辽宁海城": "101070304", "辽宁海州": "101070903",
        "辽宁清原": "101070403", "辽宁清河": "101071107", "辽宁清河门": "101070906", "辽宁溪湖": "101070505",
        "辽宁灯塔": "101071003", "辽宁瓦房店": "101070202", "辽宁甘井子": "101070211", "辽宁白塔": "101071005",
        "辽宁皇姑": "101070110", "辽宁盖州": "101070803", "辽宁盘山": "101071303", "辽宁盘锦": "101071301",
        "辽宁立山": "101070307", "辽宁站前": "101070804", "辽宁细河": "101070907", "辽宁绥中": "101071403",
        "辽宁老边": "101070807", "辽宁苏家屯": "101070112", "辽宁营口": "101070801", "辽宁葫芦岛": "101071401",
        "辽宁西丰": "101071104", "辽宁西岗": "101070209", "辽宁西市": "101070805", "辽宁调兵山": "101071105",
        "辽宁辽中": "101070103", "辽宁辽阳": "101071001", "辽宁辽阳县": "101071002", "辽宁连山": "101071405",
        "辽宁金州": "101070203", "辽宁铁东": "101070305", "辽宁铁岭": "101071101", "辽宁铁西": "101070111",
        "辽宁铁西": "101070306", "辽宁银州": "101071106", "辽宁锦州": "101070701", "辽宁长海": "101070206",
        "辽宁阜新": "101070901", "辽宁鞍山": "101070301", "辽宁顺城": "101070408", "辽宁鲅鱼圈": "101070806",
        "辽宁黑山": "101070705", "辽宁龙城": "101071206", "辽宁龙港": "101071406", "重庆万州": "101041300",
        "重庆丰都": "101043000", "重庆九龙坡": "101043900", "重庆云阳": "101041700", "重庆北碚": "101040800",
        "重庆南岸": "101044000", "重庆南川": "101040400", "重庆合川": "101040300", "重庆垫江": "101042200",
        "重庆城口": "101041600", "重庆大渡口": "101043500", "重庆大足": "101042600", "重庆奉节": "101041900",
        "重庆巫山": "101042000", "重庆巫溪": "101041800", "重庆巴南": "101040900", "重庆开县": "101041500",
        "重庆开州": "101044100", "重庆彭水": "101043200", "重庆忠县": "101042400", "重庆梁平": "101042300",
        "重庆武隆": "101043100", "重庆永川": "101040200", "重庆江北": "101043700", "重庆江津": "101040500",
        "重庆沙坪坝": "101043800", "重庆涪陵": "101041400", "重庆渝中": "101041200", "重庆渝北": "101040700",
        "重庆潼南": "101042100", "重庆璧山": "101042900", "重庆石柱": "101042500", "重庆秀山": "101043600",
        "重庆綦江": "101043300", "重庆荣昌": "101042700", "重庆酉阳": "101043400", "重庆重庆": "101040100",
        "重庆铜梁": "101042800", "重庆长寿": "101041000", "重庆黔江": "101041100", "黑龙江七台河": "101051002",
        "黑龙江上甘岭": "101050817", "黑龙江东宁": "101050307", "黑龙江东安": "101050308", "黑龙江东山": "101051208",
        "黑龙江东风": "101050410", "黑龙江乌伊岭": "101050802", "黑龙江乌马河": "101050813", "黑龙江五大连池": "101050605",
        "黑龙江五常": "101050112", "黑龙江五营": "101050803", "黑龙江伊春": "101050801", "黑龙江佳木斯": "101050401",
        "黑龙江依兰": "101050106", "黑龙江依安": "101050206", "黑龙江克东": "101050209", "黑龙江克山": "101050208",
        "黑龙江兰西": "101050507", "黑龙江兴安": "101051207", "黑龙江兴山": "101051209", "黑龙江前进": "101050409",
        "黑龙江加格达奇": "101050708", "黑龙江勃利": "101051003", "黑龙江北安": "101050606", "黑龙江北林": "101050511",
        "黑龙江南山": "101051206", "黑龙江南岔": "101050806", "黑龙江南岗": "101050115", "黑龙江友好": "101050807",
        "黑龙江友谊": "101051305", "黑龙江双城": "101050102", "黑龙江双鸭山": "101051301", "黑龙江同江": "101050406",
        "黑龙江向阳": "101050408", "黑龙江向阳": "101051204", "黑龙江呼中": "101050705", "黑龙江呼兰": "101050103",
        "黑龙江呼玛": "101050704", "黑龙江哈尔滨": "101050101", "黑龙江嘉荫": "101050805", "黑龙江四方台": "101051308",
        "黑龙江城子河": "101051109", "黑龙江塔河": "101050702", "黑龙江大兴安岭": "101050701", "黑龙江大同": "101050910",
        "黑龙江大庆": "101050901", "黑龙江嫩江": "101050602", "黑龙江孙吴": "101050603", "黑龙江宁安": "101050306",
        "黑龙江安达": "101050503", "黑龙江宝山": "101051309", "黑龙江宝清": "101051303", "黑龙江宾县": "101050105",
        "黑龙江密山": "101051103", "黑龙江富拉尔基": "101050215", "黑龙江富裕": "101050205", "黑龙江富锦": "101050407",
        "黑龙江尖山": "101051306", "黑龙江尚志": "101050111", "黑龙江岭东": "101051307", "黑龙江工农": "101051205",
        "黑龙江巴彦": "101050107", "黑龙江带岭": "101050815", "黑龙江平房": "101050117", "黑龙江庆安": "101050509",
        "黑龙江延寿": "101050110", "黑龙江建华": "101050212", "黑龙江恒山": "101051106", "黑龙江抚远": "101050403",
        "黑龙江拜泉": "101050207", "黑龙江新兴": "101051001", "黑龙江新林": "101050706", "黑龙江新青": "101050810",
        "黑龙江方正": "101050109", "黑龙江昂昂溪": "101050214", "黑龙江明水": "101050505", "黑龙江望奎": "101050506",
        "黑龙江木兰": "101050113", "黑龙江杜尔伯特": "101050905", "黑龙江松北": "101050118", "黑龙江林口": "101050304",
        "黑龙江林甸": "101050902", "黑龙江桃山": "101051004", "黑龙江桦南": "101050405", "黑龙江桦川": "101050404",
        "黑龙江梅里斯": "101050217", "黑龙江梨树": "101051108", "黑龙江汤原": "101050402", "黑龙江汤旺": "101050814",
        "黑龙江泰来": "101050210", "黑龙江海伦": "101050504", "黑龙江海林": "101050302", "黑龙江滴道": "101051107",
        "黑龙江漠河": "101050703", "黑龙江爱民": "101050310", "黑龙江爱辉": "101050607", "黑龙江牡丹江": "101050301",
        "黑龙江甘南": "101050204", "黑龙江碾子山": "101050216", "黑龙江穆棱": "101050303", "黑龙江红岗": "101050909",
        "黑龙江红星": "101050816", "黑龙江绥化": "101050501", "黑龙江绥棱": "101050510", "黑龙江绥滨": "101051202",
        "黑龙江绥芬河": "101050305", "黑龙江美溪": "101050811", "黑龙江翠峦": "101050809", "黑龙江肇东": "101050502",
        "黑龙江肇州": "101050903", "黑龙江肇源": "101050904", "黑龙江茄子河": "101051005", "黑龙江虎林": "101051102",
        "黑龙江西安": "101050311", "黑龙江西林": "101050808", "黑龙江让胡路": "101050908", "黑龙江讷河": "101050202",
        "黑龙江逊克": "101050604", "黑龙江通河": "101050108", "黑龙江道外": "101050116", "黑龙江道里": "101050114",
        "黑龙江郊区": "101050411", "黑龙江金山屯": "101050812", "黑龙江铁力": "101050804", "黑龙江铁锋": "101050213",
        "黑龙江阳明": "101050309", "黑龙江阿城": "101050104", "黑龙江集贤": "101051302", "黑龙江青冈": "101050508",
        "黑龙江饶河": "101051304", "黑龙江香坊": "101050119", "黑龙江鸡东": "101051104", "黑龙江鸡冠": "101051105",
        "黑龙江鸡西": "101051101", "黑龙江鹤岗": "101051201", "黑龙江麻山": "101051110", "黑龙江黑河": "101050601",
        "黑龙江齐齐哈尔": "101050201", "黑龙江龙凤": "101050907", "黑龙江龙江": "101050203", "黑龙江龙沙": "101050211"
    }
    cityName = province + city
    cityID = '101010200'  # Default to Haidian, Beijing if not found
    if cityName in cityMap:
        cityID = cityMap[cityName]

    json_string = '暂无天气预报'
    url = 'http://t.weather.sojson.com/api/weather/city/' + cityID
    # Send GET request
    response = requests.get(url)
    # Check if request was successful
    if response.status_code == 200:
        # Get response body
        json_string = response.text
    
    return json_string





app = mcp.sse_app()